"use strict";

const Controller = require("egg").Controller;

class BwlController extends Controller {
    /**
     * 添加
     */
    async create() {
        // 获取参数
        const {
            platform,
            task,
            benjin,
            yongjin,
            is_benjin_return = 0,
            is_yongjin_return = 0,
            mark = "",
        } = this.ctx.request.body;
        // 非空校验
        if (!platform || !task || !benjin || !yongjin) {
            this.ctx.body = {
                code: 400,
                message: "缺少必须参数",
            };
            return;
        }
        // 平台只能是 1、2、3
        if (isNaN(platform) || ![1, 2, 3].includes(Number(platform))) {
            this.ctx.body = {
                code: 400,
                message: "平台类型不正确",
            };
            return;
        }
        // 本金是否已返校验
        if (
            isNaN(is_benjin_return) ||
            ![0, 1].includes(Number(is_benjin_return))
        ) {
            this.ctx.body = {
                code: 400,
                message: "本金已返字段类型不正确",
            };
            return;
        }
        // 佣金是否已返校验
        if (
            isNaN(is_yongjin_return) ||
            ![0, 1].includes(Number(is_yongjin_return))
        ) {
            this.ctx.body = {
                code: 400,
                message: "佣金已返字段类型不正确",
            };
            return;
        }
        // 添加到数据库
        const res = await this.service.bwl.add({
            platform,
            task,
            benjin,
            yongjin,
            is_benjin_return,
            is_yongjin_return,
            mark,
        });
        // 判断是否添加成功
        if (res.affectedRows === 1) {
            this.ctx.body = {
                code: 201,
                message: "添加成功",
            };
        }
    }

    /**
     * 列表
     */
    async index() {
        // 获取参数
        const { pagesize, pagenum } = this.ctx.query;
        // 全量数据
        let res;
        // 是否分页数据
        if (!isNaN(pagesize) && !isNaN(pagenum)) {
            res = await this.service.bwl.readListPage(
                Number(pagesize),
                Number(pagenum)
            );
        } else {
            res = await this.service.bwl.readList();
        }
        // 返回响应
        this.ctx.body = {
            code: 200,
            data: res,
            message: "获取列表成功",
        };
    }

    /**
     * 详情
     */
    async detail() {
        // 解构路径参数
        const { id } = this.ctx.params;
        const res = await this.service.bwl.find(id);
        this.ctx.body = {
            code: 200,
            data: res,
            message: "获取列表成功",
        };
    }

    /**
     * 修改
     */
    async update() {
        // 解构参数
        const { id } = this.ctx.params;
        const { is_benjin_return, is_yongjin_return } = this.ctx.request.body;
        // 非空校验
        if (is_benjin_return === undefined || is_yongjin_return === undefined) {
            this.ctx.body = {
                code: 400,
                message: "缺少必须参数",
            };
            return;
        }
        // 本金是否已返校验
        if (
            isNaN(is_benjin_return) ||
            ![0, 1].includes(Number(is_benjin_return))
        ) {
            this.ctx.body = {
                code: 400,
                message: "本金已返字段类型不正确",
            };
            return;
        }
        // 佣金是否已返校验
        if (
            isNaN(is_yongjin_return) ||
            ![0, 1].includes(Number(is_yongjin_return))
        ) {
            this.ctx.body = {
                code: 400,
                message: "佣金已返字段类型不正确",
            };
            return;
        }
        // 修改数据库的值
        const res = await this.service.bwl.update(
            id,
            is_benjin_return,
            is_yongjin_return
        );
        // 判断是否修改成功
        if (res.affectedRows === 1) {
            this.ctx.body = {
                code: 200,
                message: "修改成功",
            };
        }
    }

    async delete() {
        // 解构参数
        const { id } = this.ctx.params;
        // 存不存在
        // 。。。
        // 删除数据库中的备忘录
        const res = await this.service.bwl.delete(id);
        // 删除成功
        if (res.affectedRows === 1) {
            this.ctx.body = {
                code: 204,
                message: "删除成功",
            };
        }
    }
}

module.exports = BwlController;
